package sort;

import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.TreeSet;

/**
 * @author dx
 * @version 1.0
 * @date 2022/3/25 17:20
 * @description:  分饼干
 * 假设你是一位很棒的家长，想要给你的孩子们一些小饼干。但是，每个孩子最多只能给一块饼干。
 *
 * 对每个孩子 i，都有一个胃口值 g[i]，这是能让孩子们满足胃口的饼干的最小尺寸；并且每块饼干 j，都有一个尺寸 s[j] 。
 * 如果 s[j] >= g[i]，我们可以将这个饼干 j 分配给孩子 i ，这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子，并输出这个最大数值。
 *
 * Arrays.sort(int[])  :排序  从小到大
 *
 */
public class Fen_bg {

    //方法用例没有全部通过
//    public static int findContentChildren(int[] g, int[] s){
//
//        TreeSet<Integer> t1 = new TreeSet<Integer>();
//        TreeSet<Integer> t2 = new TreeSet<Integer>();
//
//        for(int num : g){
//            t1.add(num);
//        }
//        for(int num : s){
//            t2.add(num);
//        }
//        int content = 0;
//        while (t2.size() != 0 && t1.size() != 0) {
//            if (t2.last() >= t1.last()) {
//                content++;
//                t2.remove(t2.last());
//            }
//            t1.remove(t1.last());
//
//        }
//        return content;
//    }
    public static int findContentChildren(int[] g, int[] s){

        Arrays.sort(g);
        Arrays.sort(s);
        int childrennumber = g.length;
        int cookienumber = s.length;
        int content = 0;

        for(int i=0,j=0;i<childrennumber && j<cookienumber;i++,j++){

            //给每个小朋友找合适的饼干
            while(j<childrennumber && g[i]>s[j]){
                j++;
            }
            if(j<childrennumber){
                content++;
            }

        }
        return content;
    }
}
